<?php
/**
* 名称：帐户会话抽象控制器。
* 描述：根据帐户会话状态，保护相关受限访问页面并设置相关会话数据。
* @abstract
*/
abstract class Controller_Public_Account extends Controller_Public_Preload{
    /**
    * 保存当前会话用户名。
    * @access  private
    * @var     string
    * @default NULL
    */
    protected $Username=NULL;

    /**
    * 描述：一级入口函数，会话状态校检并配置会话标量。
    * @access public
    * @param  string $method 必选 调用的方法名称。
    * @return void
    */
    public function __Construct($method){
        $this->SetScalar();
        $this->CheckUser($method);
    }

    /**
    * 描述：设置会话相关标量。
    * @access private
    * @return void
    */
    private function SetScalar() {
        $this->Username=Cookie::Get(Model_Account::COOKIE_USERNAME);
    }

    /**
    * 描述：验证当前会话帐户权限，未通过转向登录页面。
    * @access private
    * @param  string  $method 必选 调用程式的名称即方法名。
    * @return void
    */
    private function CheckUser($method){
        if(Model_Account::IsLogin()){
            self::$Template->Assign('user',array(
                'username'=>$this->Username
            ));
            parent::__Construct($method);
        }
        else{
            header('location:'.Route::MakeHyperlink(':login'));
        }
    }
}